// The Level namespace will contain the methods and classes used to create and manage a level, i.e. Tiles, TileMaps, etc
#include "Graphics.h"
#include <iostream>

#ifndef _LEVEL_H_
#define _LEVEL_H_

namespace Level
{
	class Tile;
	class Map;
	class Item;

	class Tile
	{
	public:
		Tile(int textureID, bool blocked, Item* tItem);
		~Tile();

		bool isBlocked();
		Item* getItem();
	private:
		bool blocked;
		int texture;
		Item* myItem;

		friend class Map;
	};

	class Map
	{
	public:
		Map(std::string filename);
		~Map();

		void LoadTiles(std::string filename);
		void LoadTextures(std::string filename);
		void LoadItems(std::string filename);

		void draw(Graphics::Screen screen);
		void move(int x, int y);

		Item* getItem(int x, int y);
	private:
		Tile** tiles;
		Graphics::Texture* textures;
	};

	class Item
	{
	public:
		Item();
		~Item();
	private:
		// unfinished template
	};
};

#endif